package com.example.design.bilibili.state;

import java.util.Random;

/**
 * 可抽奖状态
 */
public class CanRaffleState extends State{

    //初始化时传入活动引用，发放奖品后改变其状态
    RaffleActivity activity;

    public CanRaffleState(RaffleActivity activity) {
        this.activity = activity;
    }

    //已经扣除了积分，不能再扣积分
    @Override
    public void deductMoney() {
        //System.out.println("已经扣除了积分");
    }

    //可以抽奖，抽完奖后，根据实际情况，改变新的状态
    @Override
    public boolean raffle() {
        //System.out.println("正在抽奖，请稍等！");
        Random r = new Random();

        int num = r.nextInt(1);

        //10%中奖机会
        if(num == 0 ){
            //改变活动状态为发放奖品 context
            activity.setState(activity.getDispenseState());
            return true;
        }else {
            //System.out.println("很遗憾，没有抽中奖品！");
            //改变状态不能抽奖
            activity.setState(activity.getNoRaffleState());
            return false;
        }
    }

    //不能发放奖品
    @Override
    public void dispensePrize() {
        //System.out.println("没中奖，不能发放礼品。");
    }
}
